// DecisionNode.java
package org.zjx.core;

/**
 * 决策节点基础接口 - 定义决策树中单个节点的行为
 *
 * 这个接口是决策树的基本构建块，每个节点负责根据上下文做出决策，
 * 可以返回一个游戏动作或null(表示无动作)。
 */
public interface DecisionNode {
    /**
     * 根据上下文做出决策
     *
     * @param context 决策上下文，包含状态访问器和本地参数
     * @return 游戏动作，可能为null表示无动作
     */
    GameAction decide(DecisionContext context);

    /**
     * 获取节点标识
     *
     * @return 节点ID，默认实现返回类名作为ID
     */
    default String getNodeId() {
        return this.getClass().getSimpleName();
    }
}